home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / g_man / cat3 / OpenGL-ftn / fglreadpixels.z / fglreadpixels
Encoding:
Text File  |  2002-10-03  |  41.8 KB  |  466 lines

  1.  
  2.  
  3.  
  4. ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss((((3333GGGG))))              OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee              ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss((((3333GGGG))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss - read a block of pixels from the frame buffer
  10.  
  11.  
  12. FFFFOOOORRRRTTTTRRRRAAAANNNN SSSSPPPPEEEECCCCIIIIFFFFIIIICCCCAAAATTTTIIIIOOOONNNN
  13.      SUBROUTINE ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss( INTEGER*4 _x,
  14.                                INTEGER*4 _y,
  15.                                INTEGER*4 _w_i_d_t_h,
  16.                                INTEGER*4 _h_e_i_g_h_t,
  17.                                INTEGER*4 _f_o_r_m_a_t,
  18.                                INTEGER*4 _t_y_p_e,
  19.                                CHARACTER*8 _p_i_x_e_l_s )
  20.  
  21.  
  22. PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS
  23.      _x, _y Specify the window coordinates of the first pixel that is read from
  24.           the frame buffer.  This location is the lower left corner of a
  25.           rectangular block of pixels.
  26.  
  27.      _w_i_d_t_h, _h_e_i_g_h_t
  28.           Specify the dimensions of the pixel rectangle.  _w_i_d_t_h and _h_e_i_g_h_t of
  29.           one correspond to a single pixel.
  30.  
  31.      _f_o_r_m_a_t
  32.           Specifies the format of the pixel data.  The following symbolic
  33.           values are accepted:  GGGGLLLL____CCCCOOOOLLLLOOOORRRR____IIIINNNNDDDDEEEEXXXX, GGGGLLLL____SSSSTTTTEEEENNNNCCCCIIIILLLL____IIIINNNNDDDDEEEEXXXX,
  34.           GGGGLLLL____DDDDEEEEPPPPTTTTHHHH____CCCCOOOOMMMMPPPPOOOONNNNEEEENNNNTTTT, GGGGLLLL____RRRREEEEDDDD, GGGGLLLL____GGGGRRRREEEEEEEENNNN, GGGGLLLL____BBBBLLLLUUUUEEEE, GGGGLLLL____AAAALLLLPPPPHHHHAAAA, GGGGLLLL____RRRRGGGGBBBB,
  35.           GGGGLLLL____BBBBGGGGRRRR, GGGGLLLL____RRRRGGGGBBBBAAAA, GGGGLLLL____BBBBGGGGRRRRAAAA, GGGGLLLL____AAAABBBBGGGGRRRR____EEEEXXXXTTTT, GGGGLLLL____LLLLUUUUMMMMIIIINNNNAAAANNNNCCCCEEEE, and
  36.           GGGGLLLL____LLLLUUUUMMMMIIIINNNNAAAANNNNCCCCEEEE____AAAALLLLPPPPHHHHAAAA.
  37.  
  38.      _t_y_p_e Specifies the data type of the pixel data.  Must be one of
  39.           GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE, GGGGLLLL____BBBBYYYYTTTTEEEE, GGGGLLLL____BBBBIIIITTTTMMMMAAAAPPPP, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT, GGGGLLLL____SSSSHHHHOOOORRRRTTTT,
  40.           GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT, GGGGLLLL____IIIINNNNTTTT, GGGGLLLL____FFFFLLLLOOOOAAAATTTT, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE____3333____3333____2222,
  41.           GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE____2222____3333____3333____RRRREEEEVVVV, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____6666____5555,
  42.           GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____6666____5555____RRRREEEEVVVV, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____4444____4444____4444____4444,
  43.           GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____4444____4444____4444____4444____RRRREEEEVVVV, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____5555____5555____1111,
  44.           GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____1111____5555____5555____5555____RRRREEEEVVVV, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____8888____8888____8888____8888,
  45.           GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____8888____8888____8888____8888____RRRREEEEVVVV, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____11110000____11110000____11110000____2222, or
  46.           GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____2222____11110000____11110000____11110000____RRRREEEEVVVV.
  47.  
  48.      _p_i_x_e_l_s
  49.           Returns the pixel data.
  50.  
  51. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  52.      ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss returns pixel data from the frame buffer, starting with the
  53.      pixel whose lower left corner is at location (_x, _y), into client memory
  54.      starting at location _p_i_x_e_l_s.  Several parameters control the processing
  55.      of the pixel data before it is placed into client memory.  These
  56.      parameters are set with three commands:  ffffggggllllPPPPiiiixxxxeeeellllSSSSttttoooorrrreeee, ffffggggllllPPPPiiiixxxxeeeellllTTTTrrrraaaannnnssssffffeeeerrrr,
  57.      and ffffggggllllPPPPiiiixxxxeeeellllMMMMaaaapppp.  This reference page describes the effects on
  58.      ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss of most, but not all of the parameters specified by these
  59.      three commands.
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss((((3333GGGG))))              OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee              ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss((((3333GGGG))))
  71.  
  72.  
  73.  
  74.      When the GGGGLLLL____AAAARRRRBBBB____iiiimmmmaaaaggggiiiinnnngggg extension is supported, the pixel data may be
  75.      processed by additional operations including color table lookup, color
  76.      matrix tranformations, convolutions, histograms and minimum and maximun
  77.      pixel value computations.
  78.  
  79.      ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss returns values from each pixel with lower left corner at (_x
  80.      + i, _y + j) for 0 _< i < _w_i_d_t_h and 0 _< j < _h_e_i_g_h_t.  This pixel is said to
  81.      be the ith pixel in the jth row. Pixels are returned in row order from
  82.      the lowest to the highest row, left to right in each row.
  83.  
  84.      _f_o_r_m_a_t specifies the format for the returned pixel values; accepted
  85.      values are:
  86.  
  87.      GGGGLLLL____CCCCOOOOLLLLOOOORRRR____IIIINNNNDDDDEEEEXXXX
  88.                Color indices are read from the color buffer selected by
  89.                ffffggggllllRRRReeeeaaaaddddBBBBuuuuffffffffeeeerrrr.  Each index is converted to fixed point, shifted
  90.                left or right depending on the value and sign of
  91.                GGGGLLLL____IIIINNNNDDDDEEEEXXXX____SSSSHHHHIIIIFFFFTTTT, and added to GGGGLLLL____IIIINNNNDDDDEEEEXXXX____OOOOFFFFFFFFSSSSEEEETTTT. If GGGGLLLL____MMMMAAAAPPPP____CCCCOOOOLLLLOOOORRRR
  92.                is GGGGLLLL____TTTTRRRRUUUUEEEE, indices are replaced by their mappings in the table
  93.                GGGGLLLL____PPPPIIIIXXXXEEEELLLL____MMMMAAAAPPPP____IIII____TTTTOOOO____IIII.
  94.  
  95.      GGGGLLLL____SSSSTTTTEEEENNNNCCCCIIIILLLL____IIIINNNNDDDDEEEEXXXX
  96.                Stencil values are read from the stencil buffer.  Each index is
  97.                converted to fixed point, shifted left or right depending on
  98.                the value and sign of GGGGLLLL____IIIINNNNDDDDEEEEXXXX____SSSSHHHHIIIIFFFFTTTT, and added to
  99.                GGGGLLLL____IIIINNNNDDDDEEEEXXXX____OOOOFFFFFFFFSSSSEEEETTTT. If GGGGLLLL____MMMMAAAAPPPP____SSSSTTTTEEEENNNNCCCCIIIILLLL is GGGGLLLL____TTTTRRRRUUUUEEEE, indices are
  100.                replaced by their mappings in the table GGGGLLLL____PPPPIIIIXXXXEEEELLLL____MMMMAAAAPPPP____SSSS____TTTTOOOO____SSSS.
  101.  
  102.      GGGGLLLL____DDDDEEEEPPPPTTTTHHHH____CCCCOOOOMMMMPPPPOOOONNNNEEEENNNNTTTT
  103.                Depth values are read from the depth buffer.  Each component is
  104.                converted to floating point such that the minimum depth value
  105.                maps to 0 and the maximum value maps to 1.  Each component is
  106.                then multiplied by GGGGLLLL____DDDDEEEEPPPPTTTTHHHH____SSSSCCCCAAAALLLLEEEE, added to GGGGLLLL____DDDDEEEEPPPPTTTTHHHH____BBBBIIIIAAAASSSS, and
  107.                finally clamped to the range [0,1].
  108.  
  109.      GGGGLLLL____RRRREEEEDDDD
  110.  
  111.      GGGGLLLL____GGGGRRRREEEEEEEENNNN
  112.  
  113.      GGGGLLLL____BBBBLLLLUUUUEEEE
  114.  
  115.      GGGGLLLL____AAAALLLLPPPPHHHHAAAA
  116.  
  117.      GGGGLLLL____RRRRGGGGBBBB
  118.  
  119.      GGGGLLLL____BBBBGGGGRRRR
  120.  
  121.      GGGGLLLL____RRRRGGGGBBBBAAAA
  122.  
  123.      GGGGLLLL____BBBBGGGGRRRRAAAA
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss((((3333GGGG))))              OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee              ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss((((3333GGGG))))
  137.  
  138.  
  139.  
  140.      GGGGLLLL____AAAABBBBGGGGRRRR____EEEEXXXXTTTT
  141.  
  142.      GGGGLLLL____LLLLUUUUMMMMIIIINNNNAAAANNNNCCCCEEEE
  143.  
  144.      GGGGLLLL____LLLLUUUUMMMMIIIINNNNAAAANNNNCCCCEEEE____AAAALLLLPPPPHHHHAAAA
  145.                Processing differs depending on whether color buffers store
  146.                color indices or RGBA color components.  If color indices are
  147.                stored, they are read from the color buffer selected by
  148.                ffffggggllllRRRReeeeaaaaddddBBBBuuuuffffffffeeeerrrr.  Each index is converted to fixed point, shifted
  149.                left or right depending on the value and sign of
  150.                GGGGLLLL____IIIINNNNDDDDEEEEXXXX____SSSSHHHHIIIIFFFFTTTT, and added to GGGGLLLL____IIIINNNNDDDDEEEEXXXX____OOOOFFFFFFFFSSSSEEEETTTT. Indices are then
  151.                replaced by the red, green, blue, and alpha values obtained by
  152.                indexing the tables GGGGLLLL____PPPPIIIIXXXXEEEELLLL____MMMMAAAAPPPP____IIII____TTTTOOOO____RRRR, GGGGLLLL____PPPPIIIIXXXXEEEELLLL____MMMMAAAAPPPP____IIII____TTTTOOOO____GGGG,
  153.                GGGGLLLL____PPPPIIIIXXXXEEEELLLL____MMMMAAAAPPPP____IIII____TTTTOOOO____BBBB, and GGGGLLLL____PPPPIIIIXXXXEEEELLLL____MMMMAAAAPPPP____IIII____TTTTOOOO____AAAA.  Each table must
  154.                            n
  155.                be of size 2 , but n may be different for different tables.
  156.                Before an index is used to look up a value in a table of size
  157.                 n                             n
  158.                2 , it must be masked against 2 -1.
  159.  
  160.                If RGBA color components are stored in the color buffers, they
  161.                are read from the color buffer selected by ffffggggllllRRRReeeeaaaaddddBBBBuuuuffffffffeeeerrrr.  Each
  162.                color component is converted to floating point such that zero
  163.                intensity maps to 0.0 and full intensity maps to 1.0.  Each
  164.                component is then multiplied by GGGGLLLL____cccc____SSSSCCCCAAAALLLLEEEE and added to
  165.                GGGGLLLL____cccc____BBBBIIIIAAAASSSS, where _c is RED, GREEN, BLUE, or ALPHA. Finally, if
  166.                GGGGLLLL____MMMMAAAAPPPP____CCCCOOOOLLLLOOOORRRR is GGGGLLLL____TTTTRRRRUUUUEEEE, each component is clamped to the range
  167.                [0, 1], scaled to the size of its corresponding table, and is
  168.                then replaced by its mapping in the table GGGGLLLL____PPPPIIIIXXXXEEEELLLL____MMMMAAAAPPPP____cccc____TTTTOOOO____cccc,
  169.                where _c is R, G, B, or A.
  170.  
  171.                Unneeded data is then discarded.  For example, GGGGLLLL____RRRREEEEDDDD discards
  172.                the green, blue, and alpha components, while GGGGLLLL____RRRRGGGGBBBB discards
  173.                only the alpha component.  GGGGLLLL____LLLLUUUUMMMMIIIINNNNAAAANNNNCCCCEEEE computes a single-
  174.                component value as the sum of the red, green, and blue
  175.                components, and GGGGLLLL____LLLLUUUUMMMMIIIINNNNAAAANNNNCCCCEEEE____AAAALLLLPPPPHHHHAAAA does the same, while keeping
  176.                alpha as a second value.  The final values are clamped to the
  177.                range [0, 1].
  178.  
  179.      The shift, scale, bias, and lookup factors just described are all
  180.      specified by
  181.      ffffggggllllPPPPiiiixxxxeeeellllTTTTrrrraaaannnnssssffffeeeerrrr.  The lookup table contents themselves are specified by
  182.      ffffggggllllPPPPiiiixxxxeeeellllMMMMaaaapppp.
  183.  
  184.      Finally, the indices or components are converted to the proper format, as
  185.      specified by _t_y_p_e.  If _f_o_r_m_a_t is GGGGLLLL____CCCCOOOOLLLLOOOORRRR____IIIINNNNDDDDEEEEXXXX or GGGGLLLL____SSSSTTTTEEEENNNNCCCCIIIILLLL____IIIINNNNDDDDEEEEXXXX and
  186.      _t_y_p_e is not GGGGLLLL____FFFFLLLLOOOOAAAATTTT, each index is masked with the mask value given in
  187.      the following table.  If _t_y_p_e is GGGGLLLL____FFFFLLLLOOOOAAAATTTT, then each integer index is
  188.      converted to single-precision floating-point format.
  189.  
  190.      If _f_o_r_m_a_t is GGGGLLLL____RRRREEEEDDDD, GGGGLLLL____GGGGRRRREEEEEEEENNNN, GGGGLLLL____BBBBLLLLUUUUEEEE, GGGGLLLL____AAAALLLLPPPPHHHHAAAA, GGGGLLLL____RRRRGGGGBBBB, GGGGLLLL____BBBBGGGGRRRR,
  191.      GGGGLLLL____RRRRGGGGBBBBAAAA, GGGGLLLL____BBBBGGGGRRRRAAAA, GGGGLLLL____AAAABBBBGGGGRRRR____EEEEXXXXTTTT, GGGGLLLL____LLLLUUUUMMMMIIIINNNNAAAANNNNCCCCEEEE, or GGGGLLLL____LLLLUUUUMMMMIIIINNNNAAAANNNNCCCCEEEE____AAAALLLLPPPPHHHHAAAA and
  192.      _t_y_p_e is not GGGGLLLL____FFFFLLLLOOOOAAAATTTT, each component is multiplied by the multiplier
  193.      shown in the following table.  If type is GGGGLLLL____FFFFLLLLOOOOAAAATTTT, then each component
  194.  
  195.  
  196.  
  197.                                                                         PPPPaaaaggggeeee 3333
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204. ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss((((3333GGGG))))              OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee              ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss((((3333GGGG))))
  205.  
  206.  
  207.  
  208.      is passed as is (or converted to the client's single-precision floating-
  209.      point format if it is different from the one used by the GL).
  210.  
  211.                _____________________________________________________
  212.                _t_y_p_e                iiiinnnnddddeeeexxxx mmmmaaaasssskkkk   ccccoooommmmppppoooonnnneeeennnntttt ccccoooonnnnvvvveeeerrrrssssiiiioooonnnn
  213.                _____________________________________________________
  214.  
  215.                GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE      2^8-1            (2^8-1)c
  216.                GGGGLLLL____BBBBYYYYTTTTEEEE               2^7-1         [(2^8-1)c-1]/2
  217.                GGGGLLLL____BBBBIIIITTTTMMMMAAAAPPPP               1                 1
  218.                GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT     2^16-1          (2^16-1)c
  219.                GGGGLLLL____SSSSHHHHOOOORRRRTTTT              2^15-1       [(2^16-1)c-1]/2
  220.                GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT       2^32-1          (2^32-1)c
  221.                GGGGLLLL____IIIINNNNTTTT                2^31-1       [(2^32-1)c-1]/2
  222.                GGGGLLLL____FFFFLLLLOOOOAAAATTTT               none               c
  223.                _____________________________________________________
  224.  
  225.      Return values are placed in memory as follows.  If _f_o_r_m_a_t is
  226.      GGGGLLLL____CCCCOOOOLLLLOOOORRRR____IIIINNNNDDDDEEEEXXXX, GGGGLLLL____SSSSTTTTEEEENNNNCCCCIIIILLLL____IIIINNNNDDDDEEEEXXXX, GGGGLLLL____DDDDEEEEPPPPTTTTHHHH____CCCCOOOOMMMMPPPPOOOONNNNEEEENNNNTTTT, GGGGLLLL____RRRREEEEDDDD, GGGGLLLL____GGGGRRRREEEEEEEENNNN,
  227.      GGGGLLLL____BBBBLLLLUUUUEEEE, GGGGLLLL____AAAALLLLPPPPHHHHAAAA, or GGGGLLLL____LLLLUUUUMMMMIIIINNNNAAAANNNNCCCCEEEE, a single value is returned and the
  228.      data for the ith pixel in the jth row is placed in location
  229.      (j) width + i.  GGGGLLLL____RRRRGGGGBBBB and GGGGLLLL____BBBBGGGGRRRR return three values, GGGGLLLL____RRRRGGGGBBBBAAAA, GGGGLLLL____BBBBGGGGRRRRAAAA
  230.      and GGGGLLLL____AAAABBBBGGGGRRRR____EEEEXXXXTTTT return four values, and GGGGLLLL____LLLLUUUUMMMMIIIINNNNAAAANNNNCCCCEEEE____AAAALLLLPPPPHHHHAAAA returns two
  231.      values for each pixel, with all values corresponding to a single pixel
  232.      occupying contiguous space in _p_i_x_e_l_s.  Storage parameters set by
  233.      ffffggggllllPPPPiiiixxxxeeeellllSSSSttttoooorrrreeee, such as GGGGLLLL____PPPPAAAACCCCKKKK____LLLLSSSSBBBB____FFFFIIIIRRRRSSSSTTTT and GGGGLLLL____PPPPAAAACCCCKKKK____SSSSWWWWAAAAPPPP____BBBBYYYYTTTTEEEESSSS, affect
  234.      the way that data is written into memory.  See ffffggggllllPPPPiiiixxxxeeeellllSSSSttttoooorrrreeee for a
  235.      description.
  236.  
  237.      Normally ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss is synchronous: OpenGL executes a ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss
  238.      command in the order it is issued in the OpenGL command stream.  Calling
  239.      ffffggggllllEEEEnnnnaaaabbbblllleeee with parameter GGGGLLLL____AAAASSSSYYYYNNNNCCCC____RRRREEEEAAAADDDD____PPPPIIIIXXXXEEEELLLLSSSS____SSSSGGGGIIIIXXXX causes subsequent
  240.      ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss commands to be asynchronous as defined by the SSSSGGGGIIIIXXXX____aaaassssyyyynnnncccc
  241.      extension.  An implementation of the asynchronous ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss command
  242.      may be non-blocking:  It may return control to the program immediately
  243.      rather than waiting for the command's results to be written into the
  244.      destination rectangle in host memory.  The ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss command samples
  245.      the OpenGL state vector at the time it is issued, but it may be executed
  246.      at some undefined point in the future.  In particular, if subsequent
  247.      commands change the contents of the source rectangle in the framebuffer,
  248.      then the result of the ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss is undefined.
  249.  
  250.      Calling ffffggggllllDDDDiiiissssaaaabbbblllleeee with parameter GGGGLLLL____AAAASSSSYYYYNNNNCCCC____RRRREEEEAAAADDDD____PPPPIIIIXXXXEEEELLLLSSSS____SSSSGGGGIIIIXXXX restores the
  251.      default synchronous behavior for subsequent ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss commands.  It
  252.      does not affect any pending asynchronous ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss commands, or wait
  253.      for their completion.
  254.  
  255.      When an asynchronous ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss command is issued, it is associated
  256.      with the current value of GGGGLLLL____AAAASSSSYYYYNNNNCCCC____MMMMAAAARRRRKKKKEEEERRRR____SSSSGGGGIIIIXXXX as defined by the
  257.      SSSSGGGGIIIIXXXX____aaaassssyyyynnnncccc extension.  A program can determine if an asynchronous
  258.      ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss command has completed by using the ffffggggllllFFFFiiiinnnniiiisssshhhhAAAAssssyyyynnnnccccSSSSGGGGIIIIXXXX or
  259.      ffffggggllllPPPPoooollllllllAAAAssssyyyynnnnccccSSSSGGGGIIIIXXXX commands.
  260.  
  261.  
  262.  
  263.  
  264.                                                                         PPPPaaaaggggeeee 4444
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271. ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss((((3333GGGG))))              OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee              ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss((((3333GGGG))))
  272.  
  273.  
  274.  
  275.      There is a maximum number of asynchronous ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss commands that can
  276.      be outstanding at any one time, defined by the implementation.  This
  277.      value can be queried with ffffggggllllGGGGeeeettttIIIInnnntttteeeeggggeeeerrrrvvvv with argument
  278.      GGGGLLLL____MMMMAAAAXXXX____AAAASSSSYYYYNNNNCCCC____RRRREEEEAAAADDDD____PPPPIIIIXXXXEEEELLLLSSSS____SSSSGGGGIIIIXXXX.
  279.  
  280.      When GGGGLLLL____IIIINNNNTTTTEEEERRRRLLLLAAAACCCCEEEE____RRRREEEEAAAADDDD____IIIINNNNGGGGRRRR is enabled, every other row of the source
  281.      pixel rectangle is read.  The height of the pixel rectangle is equivalent
  282.      to 2xheight.  Only rows (y+0,y+2,...) are read and affected by the pixel
  283.      transfer and store operations.
  284.  
  285. NNNNOOOOTTTTEEEESSSS
  286.      Values for pixels that lie outside the window connected to the current GL
  287.      context are undefined.
  288.  
  289.      GGGGLLLL____AAAABBBBGGGGRRRR____EEEEXXXXTTTT is valid only if the EEEEXXXXTTTT____aaaabbbbggggrrrr extension is supported.
  290.  
  291.      If an error is generated, no change is made to the contents of _p_i_x_e_l_s.
  292.  
  293. EEEERRRRRRRROOOORRRRSSSS
  294.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____EEEENNNNUUUUMMMM is generated if _f_o_r_m_a_t or _t_y_p_e is not an accepted value.
  295.  
  296.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____EEEENNNNUUUUMMMM is generated if _t_y_p_e is GGGGLLLL____BBBBIIIITTTTMMMMAAAAPPPP and _f_o_r_m_a_t is not
  297.      GGGGLLLL____CCCCOOOOLLLLOOOORRRR____IIIINNNNDDDDEEEEXXXX or GGGGLLLL____SSSSTTTTEEEENNNNCCCCIIIILLLL____IIIINNNNDDDDEEEEXXXX.
  298.  
  299.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____VVVVAAAALLLLUUUUEEEE is generated if either _w_i_d_t_h or _h_e_i_g_h_t is negative.
  300.  
  301.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN is generated if _f_o_r_m_a_t is GGGGLLLL____CCCCOOOOLLLLOOOORRRR____IIIINNNNDDDDEEEEXXXX and the
  302.      color buffers store RGBA color components.
  303.  
  304.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN is generated if _f_o_r_m_a_t is GGGGLLLL____SSSSTTTTEEEENNNNCCCCIIIILLLL____IIIINNNNDDDDEEEEXXXX and there
  305.      is no stencil buffer.
  306.  
  307.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN is generated if _f_o_r_m_a_t is GGGGLLLL____DDDDEEEEPPPPTTTTHHHH____CCCCOOOOMMMMPPPPOOOONNNNEEEENNNNTTTT and
  308.      there is no depth buffer.
  309.  
  310.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN is generated if ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss is executed between
  311.      the execution of ffffggggllllBBBBeeeeggggiiiinnnn and the corresponding execution of ffffggggllllEEEEnnnndddd.
  312.  
  313.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN is generated if _t_y_p_e is one of
  314.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE____3333____3333____2222, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE____2222____3333____3333____RRRREEEEVVVV,
  315.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____6666____5555, or GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____6666____5555____RRRREEEEVVVV and _f_o_r_m_a_t is not
  316.      GGGGLLLL____RRRRGGGGBBBB.
  317.  
  318.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN is generated if _t_y_p_e is one of
  319.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____4444____4444____4444____4444, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____4444____4444____4444____4444____RRRREEEEVVVV,
  320.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____5555____5555____1111, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____1111____5555____5555____5555____RRRREEEEVVVV,
  321.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____8888____8888____8888____8888, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____8888____8888____8888____8888____RRRREEEEVVVV,
  322.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____11110000____11110000____11110000____2222, or GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____2222____11110000____11110000____11110000____RRRREEEEVVVV and _f_o_r_m_a_t
  323.      is not GGGGLLLL____RRRRGGGGBBBBAAAA, GGGGLLLL____BBBBGGGGRRRRAAAA or GGGGLLLL____AAAABBBBGGGGRRRR____EEEEXXXXTTTT.
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.                                                                         PPPPaaaaggggeeee 5555
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337. ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss((((3333GGGG))))              OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee              ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss((((3333GGGG))))
  338.  
  339.  
  340.  
  341.      The formats GGGGLLLL____BBBBGGGGRRRR, and GGGGLLLL____BBBBGGGGRRRRAAAA and types GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE____3333____3333____2222,
  342.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE____2222____3333____3333____RRRREEEEVVVV, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____6666____5555,
  343.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____6666____5555____RRRREEEEVVVV, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____4444____4444____4444____4444,
  344.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____4444____4444____4444____4444____RRRREEEEVVVV, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____5555____5555____5555____1111,
  345.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT____1111____5555____5555____5555____RRRREEEEVVVV, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____8888____8888____8888____8888,
  346.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____8888____8888____8888____8888____RRRREEEEVVVV, GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____11110000____11110000____11110000____2222, and
  347.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT____2222____11110000____11110000____11110000____RRRREEEEVVVV are available only if the GL version is
  348.      1.2 or greater.
  349.  
  350.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN is generated when the SSSSGGGGIIIIXXXX____ssssuuuubbbbssssaaaammmmpppplllleeee extension is
  351.      supported, and the pixel storage mode GGGGLLLL____PPPPAAAACCCCKKKK____SSSSUUUUBBBBSSSSAAAAMMMMPPPPLLLLEEEE____RRRRAAAATTTTEEEE____SSSSGGGGIIIIXXXX is not
  352.      GGGGLLLL____PPPPIIIIXXXXEEEELLLL____SSSSUUUUBBBBSSSSAAAAMMMMPPPPLLLLEEEE____4444444444444444____SSSSGGGGIIIIXXXX, and _w_i_d_t_h is not a multiple of 2, or _f_o_r_m_a_t
  353.      is not a 3 or 4 component format, or _t_y_p_e is a packed pixels type.
  354.  
  355.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN is generated if GGGGLLLL____AAAASSSSYYYYNNNNCCCC____RRRREEEEAAAADDDD____PPPPIIIIXXXXEEEELLLLSSSS____SSSSGGGGIIIIXXXX is enabled
  356.      and the number of asynchronous ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss commands that have been
  357.      issued but not queried (using ffffggggllllFFFFiiiinnnniiiisssshhhhAAAAssssyyyynnnnccccSSSSGGGGIIIIXXXX or ffffggggllllPPPPoooollllllllAAAAssssyyyynnnnccccSSSSGGGGIIIIXXXX)
  358.      exceeds GGGGLLLL____MMMMAAAAXXXX____AAAASSSSYYYYNNNNCCCC____RRRREEEEAAAADDDD____PPPPIIIIXXXXEEEELLLLSSSS____SSSSGGGGIIIIXXXX.
  359.  
  360. AAAASSSSSSSSOOOOCCCCIIIIAAAATTTTEEEEDDDD GGGGEEEETTTTSSSS
  361.      ffffggggllllGGGGeeeetttt with argument GGGGLLLL____IIIINNNNDDDDEEEEXXXX____MMMMOOOODDDDEEEE
  362.  
  363.  
  364. MMMMAAAACCCCHHHHIIIINNNNEEEE DDDDEEEEPPPPEEEENNNNDDDDEEEENNNNCCCCIIIIEEEESSSS
  365.      The SSSSGGGGIIIIXXXX____aaaassssyyyynnnncccc and SSSSGGGGIIIIXXXX____aaaassssyyyynnnncccc____ppppiiiixxxxeeeellll extensions are implemented only on
  366.      Octane2 VPro systems.
  367.  
  368.      RealityEngine, RealityEngine2, and VTX systems do not support convolving
  369.      images as they are read from the framebuffer.
  370.  
  371.      The SSSSGGGGIIIIXXXX____yyyyccccrrrrccccbbbb extension is supported only on O2 systems.  When using
  372.      GGGGLLLL____YYYYCCCCRRRRCCCCBBBB____444422222222____SSSSGGGGIIIIXXXX with ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss on O2 systems, an odd integer value
  373.      for GGGGLLLL____PPPPAAAACCCCKKKK____SSSSKKKKIIIIPPPP____PPPPIIIIXXXXEEEELLLLSSSS will be set to the next highest even integer
  374.      value to preserve color alignment.
  375.  
  376.      On Octane2 VPro systems the format GGGGLLLL____DDDDEEEEPPPPTTTTHHHH____CCCCOOOOMMMMPPPPOOOONNNNEEEENNNNTTTT22224444____SSSSGGGGIIIIXXXX can be used
  377.      to transfer depth pixel values to and from the depth buffer in their
  378.      internal eye-space range.  There are performance advantages over
  379.      transfers that convert to screen-space values, particularly for
  380.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____IIIINNNNTTTT type pixels.
  381.  
  382.      On RealityEngine, RealityEngine2, and VTX systems, histogramming and
  383.      minmax never sink pixel data that is being read from the framebuffer.
  384.  
  385.      The IIIINNNNGGGGRRRR____iiiinnnntttteeeerrrrllllaaaacccceeee____rrrreeeeaaaadddd extension is supported only on Octane2 VPro
  386.      systems, and on O2 systems.
  387.  
  388.      The EEEEXXXXTTTT____ppppaaaacccckkkkeeeedddd____ppppiiiixxxxeeeellllssss extension is not supported on RealityEngine,
  389.      RealityEngine2, and VTX systems.
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.                                                                         PPPPaaaaggggeeee 6666
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403. ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss((((3333GGGG))))              OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee              ffffggggllllRRRReeeeaaaaddddPPPPiiiixxxxeeeellllssss((((3333GGGG))))
  404.  
  405.  
  406.  
  407.      The following problems are known to exist on RealityEngine,
  408.      RealityEngine2, and VTX systems:
  409.  
  410.           1.  It is not possible to read the depth or stencil buffers of
  411.               multisample-capable Visuals.
  412.  
  413.           2.  Reading the depth-buffer is much slower than reading a color-
  414.               buffer.
  415.  
  416.           3.  Reading RGBA format data from a color-index window does not work
  417.               correctly.
  418.  
  419.      The SSSSGGGGIIIIXXXX____ssssuuuubbbbssssaaaammmmpppplllleeee and SSSSGGGGIIIIXXXX____rrrreeeessssaaaammmmpppplllleeee extensions are supported only on
  420.      Octane2 VPro systems.  Applying the GGGGLLLL____PPPPIIIIXXXXEEEELLLL____SSSSUUUUBBBBSSSSAAAAMMMMPPPPLLLLEEEE____2222444422224444____SSSSGGGGIIIIXXXX
  421.      subsample rate is accelerated for direct immmediate mode transfers when
  422.      the format is GGGGLLLL____RRRRGGGGBBBB or GGGGLLLL____RRRRGGGGBBBBAAAA, and the type is GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____BBBBYYYYTTTTEEEE or
  423.      GGGGLLLL____UUUUNNNNSSSSIIIIGGGGNNNNEEEEDDDD____SSSSHHHHOOOORRRRTTTT.
  424.  
  425.  
  426. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  427.      ffffggggllllCCCCooooppppyyyyPPPPiiiixxxxeeeellllssss, ffffggggllllDDDDrrrraaaawwwwPPPPiiiixxxxeeeellllssss, ffffggggllllPPPPiiiixxxxeeeellllMMMMaaaapppp, ffffggggllllPPPPiiiixxxxeeeellllSSSSttttoooorrrreeee,
  428.      ffffggggllllPPPPiiiixxxxeeeellllTTTTrrrraaaannnnssssffffeeeerrrr, ffffggggllllRRRReeeeaaaaddddBBBBuuuuffffffffeeeerrrr, ffffggggllllAAAAssssyyyynnnnccccMMMMaaaarrrrkkkkeeeerrrrSSSSGGGGIIIIXXXX,
  429.      ffffggggllllDDDDeeeelllleeeetttteeeeAAAAssssyyyynnnnccccMMMMaaaarrrrkkkkeeeerrrrssssSSSSGGGGIIIIXXXX, ffffggggllllFFFFiiiinnnniiiisssshhhhAAAAssssyyyynnnnccccSSSSGGGGIIIIXXXX, ffffggggllllGGGGeeeennnnAAAAssssyyyynnnnccccMMMMaaaarrrrkkkkeeeerrrrssssSSSSGGGGIIIIXXXX,
  430.      ffffggggllllIIIIssssAAAAssssyyyynnnnccccMMMMaaaarrrrkkkkeeeerrrrSSSSGGGGIIIIXXXX, ffffggggllllPPPPoooollllllllAAAAssssyyyynnnnccccSSSSGGGGIIIIXXXX
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.                                                                         PPPPaaaaggggeeee 7777
  463.  
  464.  
  465.  
  466.